/*
 * @lc app=leetcode.cn id=766 lang=cpp
 *
 * [766] 托普利茨矩阵
 */

#include <iostream>
#include <map>
#include <set>
#include <vector>
using namespace std;

// @lc code=start
class Solution {
   public:
    bool isToeplitzMatrix(vector<vector<int>>& matrix) {
        int index_size = matrix.size();
        int column_size = matrix[0].size();
        bool result = true;

        // 以每一行的第一个元素为起点，检验其对角线元素
        for (int i = 0; i < index_size; i++) {
            int x = i;
            int y = 0;
            int basic_value = matrix[x][y];

            while (x < index_size && y < column_size) {
                if (matrix[x][y] != basic_value) {
                    result = false;
                    break;
                }
                x++;
                y++;
            }

            if (!result){
                break;
            }
        }

        // 以每一列的第一个元素为起点，检验其对角线元素
        for (int i = 0; i < column_size; i++) {
            int x = 0;
            int y = i;
            int basic_value = matrix[x][y];

            while (x < index_size && y < column_size) {
                if (matrix[x][y] != basic_value) {
                    result = false;
                    break;
                }
                x++;
                y++;
            }

            if (!result){
                break;
            }
        }

        // 返回结果
        return result;
    }
};
// @lc code=end
